// src/utils/apiClient.js
import User from "@/utils/User/User.js";
import axios from 'axios';
import { useRouter } from "vue-router";
import GlobeConfig from "@/const.js";

// 定义不需要token验证的接口白名单
const noAuthEndpoints = [
    '/login', // 登录接口
    '/register', // 注册接口
    '/primary_video'
];
const router = useRouter()
// 创建 Axios 实例
const apiClient = axios.create({
    baseURL: GlobeConfig.baseUrl,
    headers: {
        'Content-Type': 'application/json',
        // 'Content-Type': 'multipart/form-data',
    }
});

// 请求拦截器
apiClient.interceptors.request.use(
    config => {
        // 检查当前请求是否在不需要token验证的白名单中
        const endpoint = config.url;
        if (noAuthEndpoints.some(path => endpoint.includes(path))) {
            return config; // 不需要token验证的接口直接放行
        }

        // Todo 给路由守卫也做
        // 检查是否有token
        const token = User.isLogin() ? localStorage.getItem('drive_platform_token') : null;
        if (!token) {
            // 如果没有token，阻止W请求并显示登录弹窗
            return Promise.reject(new Error('No token found'));

        }

        // 添加token到请求头
        config.headers['token'] = `${token}`;
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);

// 响应拦截器
apiClient.interceptors.response.use(
    response => {
        // 检查响应中是否包含新的token
        if (response.data && response.data.token) {
            // 存储新的token
            User.setToken(response.data.token);
        }
        return response;
    },
    error => {
        if (error.response) {

        }
        return Promise.reject(error);
    }
);

export default apiClient;
